package com.scoy.honeymei.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Environment;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;

/**
 * @ClassName: VideoUtil$
 * @Description:  获取视频首帧图
 * @Author: GaoZhan
 * @CreateDate: 2019/5/28/0028$ 下午 16:44$
 * @UpdateUser: 更新者
 * @UpdateDate: 2019/5/28/0028$ 下午 16:44$
 * @UpdateRemark: 更新内容
 */
public class VideoUtil {

    /**
     * 首选
     *
     * 获取首帧图
     *
     * @param context
     * @param uri
     * @return
     */
    public static Bitmap printScreen(Context context, Uri uri) {
        MediaMetadataRetriever retriever = null;
        Bitmap bitmap;
        try {
            retriever = new MediaMetadataRetriever();
            retriever.setDataSource(context, uri);
            bitmap = retriever.getFrameAtTime(300, MediaMetadataRetriever.OPTION_NEXT_SYNC);
            return bitmap;
        } catch (Exception e) {
            // LogTool.logError(e.getMessage());
            e.printStackTrace();
        } finally {
            if (retriever != null) {
                retriever.release();
            }
        }
        return null;
    }

    public static Bitmap printScreen(Context context, File file) {
        return printScreen(context, Uri.fromFile(file));
    }



    /**
     * 获取视频首帧图并转化为bitmap
     * @param videoUrl
     * @return
     */
    public static Bitmap voidToFirstBitmap(String videoUrl){
        MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever();
        metadataRetriever.setDataSource(videoUrl);
        Bitmap bitmap = metadataRetriever.getFrameAtTime();
        return bitmap;
    }

    /**
     * 将bitmap转化成本地图片路径
     * @param context
     * @param bitmap
     * @return
     */
    public static String bitmapToStringPath(Context context, Bitmap bitmap){
        String savePath;
        File filePic;
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            savePath = "/sdcard/dskgxt/pic/";
        }else {
            savePath = context.getApplicationContext().getFilesDir().getAbsolutePath() + "/hnmm/pic/";
        }
        try {
            filePic = new File(savePath + UUID.randomUUID().toString() + ".jpg");
            if (!filePic.exists()) {
                filePic.getParentFile().mkdirs();
                filePic.createNewFile();
            }
            FileOutputStream fos = new FileOutputStream(filePic);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        }catch(IOException e){
            e.printStackTrace();
            return null;
        }
        return filePic.getAbsolutePath();
    }

}
